home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / tools / anwender / calc / calc_pd.doc < prev    next >
Text File  |  1995-11-25  |  32KB  |  838 lines

  1.  
  2.  
  3.  
  4.              Programmbeschreibung:  CALC_13.TOS
  5.              
  6.  
  7.  
  8. File:            CALC_PD.DOC
  9.  
  10. Autor:           G. Schnell       Tel: 0531 - 693058
  11.                  Dachdeckerweg 19
  12.                  38126 Braunschweig
  13.  
  14. Entwickelt mit:  ATARI 1040 STFM 4MB,  TOS 2.06
  15.  
  16. Compiler:        Prospero Fortran 77,  Version 2.165
  17.  
  18. Programmstart:   als CALC_13.TOS unter TOS oder Multi-TOS
  19.                  
  20. 13  :            Max. Anzahl Dezimalstellen der CALC-Version
  21.  
  22. benötigte
  23. Hardware:        ST, STE, TT, FALCON   1 MB
  24.  
  25. Auflösung:       640 * 400  monochrom
  26.  
  27. benötigte
  28. Software:        ASCII-Editor
  29.  
  30.  
  31.  
  32.  
  33. Name der Ausgabe-Datei:     CALC.LS
  34.  
  35.  
  36. Namen der Eingabe-Dateien:  xxxxxxxx.IN
  37.                             xxxxxxxx.DAT
  38.  
  39.  
  40.  
  41. Kurzbeschreibung:
  42.  
  43. Simulation eines programmierbaren Taschenrechners
  44. mit Ein- und Ausgabemöglichkeiten und wählbarer
  45. Genauigkeit.
  46. C..NP
  47.                Starten und Beenden von CALC
  48.                
  49. CALC verlangt beim Start eine arithmetische Anweisung als Passwort.
  50. Bei fehlerhafter Angabe des Passwortes wird CALC sofort beendet.
  51. Falls Sie eine eingeschränkte PD-Version von CALC besitzen, geben Sie
  52. den Zeichenstring PI und Return ein.
  53.  
  54. Sie beenden CALC durch Eingabe von  BY  in der Eingabezeile und
  55. anschließendem Drücken der Return Taste.
  56.  
  57.             
  58.  
  59.                Ausdruck dieser Programmbeschreibung
  60.                
  61. Starten Sie das Programm F_PRN.TTP und geben Sie in der erscheinen-
  62. den Box den String calc_pd.doc ein. F_PRN.TTP gibt diese Beschreibung
  63. im ASCII-Modus auf Drucker aus. Zumindest auf dem HP Deskjet
  64. funktioniert das.
  65.  
  66.  
  67.  
  68.                Fehlerhandling in CALC
  69.                
  70. CALC versucht Fehler abzufangen.
  71. Im Fehlerfall werden Fehlermeldungen in der Ergebniszeile ausgegeben.
  72.  
  73. Beliebte Fehler sind:
  74.  
  75. a) Benutzen von Stackvariablen ohne Wert.
  76. b) Falsche Anzahl von Argumenten in Funktionen.
  77. c) Benutzen von Semikolon oder einzelnen Hochkommata innerhalb
  78.    von Doppelhochkommata.
  79.  
  80.  
  81.  
  82.                CALC unter MULTITOS
  83.  
  84. a) Falls CALC um eine Zeile falsch positioniert, dann spendieren
  85.    Sie TOSWIN 26 statt 25 Zeilen für sein Fenster.
  86.  
  87. b) Falls Sie Ausgaben auf CALC.LS getätigt haben, sollten Sie 
  88.    CALC nicht durch Schließen des Fensters ( Schlie0knopf oben
  89.    links ) verlassen. Die Datei CALC.LS geht verloren, es sei denn,
  90.    Sie geben vorher den Befehl CLOSELS .
  91. C..NP          
  92.                     Überblick
  93.                     
  94. CALC ist als interpretierender Taschenrechner mit Ein- und
  95. Ausgabemöglichkeiten und wählbarer Genauigkeit geschrieben.
  96. Das Programm benutzt eine eigene Arithmetik für große 
  97. Zahlen. Die Mantissenlänge ist in der Vollversion von
  98. 13 bis 999 Dezimalstellen einstellbar. Der Exponent reicht
  99. von 10^-16380 bis 10^16380. 
  100. Das Programm interpretiert Formeln nach mathematischen Regeln
  101. und bietet eine Fülle von Möglichkeiten.
  102. Die Reihenfolge der Formelauswertung ist nicht unbedingt von
  103. links nach rechts! Eine bestimmte Reihenfolge der Auswertung
  104. kann jedoch durch Setzen von Klammern erzwungen werden.
  105. Im Ausdruck  ( 4 + ( 2 + 1 ) )  wird zuerst 2+1=3 und dann
  106. 4+3=7 gerechnet.
  107.         
  108. Hier eine kleine Aufzählung:
  109.  
  110.    Konstanten im allgemeinen Dezimalformat, im Oktalformat,
  111.    im Hexadezimalformat, im Binärformat und im ASCII-Format
  112.    PI und EU als Mnemonics
  113.    die üblichen mathematischen Funktionen
  114.    spezielle Funktionen für große Zahlen
  115.  
  116. Variablen für rechte und linke Seite von arith. Anweisungen:
  117. Stackvariablen A bis H
  118. Variablen I bis Z
  119. Vektorvariablen K(i), XR(i) und XI(i) ( i = 1 bis 99 )
  120. Selbst definierte Variablen mit 2 bis 31 Zeichen
  121.         
  122. Matrizen ansprechbar mit ASCII-Konstanten 'A' bis 'Z'
  123.         
  124. Textvariable ansprechbar mit ASCII-Konstanten 'A' bis 'Z'
  125.         
  126. Ausgabe von Ergebnissen auf Datei
  127.         
  128. Eingabe von Daten aus Datei
  129. ( insbesondere große Zahlen und Matrizen )
  130.         
  131. Eingabe von Anweisungen aus Datei
  132. Es existieren Interpreteranweisungen für DO-Schleifen,
  133. IF - ELSE IF - ELSE - END IF Strukturen, GO TO, Input, Output
  134. und andere Befehle.
  135.         
  136. Der Interpreter wurde für einfaches Rechnen mit großen
  137. Zahlen geschrieben, ist aber auch als Taschenrechner gut
  138. zu gebrauchen. Er ist gut ausgetestet.
  139.  
  140. Auf Grund der vielen Möglichkeiten des Interpreters, der intensiven
  141. ASCII-Verarbeitung und der eigenen Arithmetik fehlt es jedoch
  142. zuweilen an Geschwindigkeit.
  143. C..NP
  144.          Einführung in die Arbeitsweise von CALC
  145.          
  146. CALC verarbeitet Eingabezeilen mit einer max. Länge von 76 Zeichen.
  147. Die Eingabezeilen kommen entweder aus Dateien oder aus dem Zeilen-
  148. editor von CALC. CALC separiert diese Eingabezeilen in Anweisungen.
  149. Als Separator dient das Semikolon.
  150. Beim Start befindet sich CALC im Append-Modus. In diesem Modus ist
  151. die APPEND-Anweisung erlaubt. Die APPEND-Anweisung liest aus Dateien
  152. mit der Extension .IN Anweisungen. Diese Anweisungen werden in einem
  153. Ringspeicher, jeweils ans Ende von schon bestehenden, noch nicht ab-
  154. gearbeiteten Anweisungen abgelegt. Aus diesem Speicher werden nach 
  155. dem Prinzip First In - First Out ( FIFO ) Eingabezeilen ausgelesen,
  156. separiert, ausgeführt und freigegeben. Mit Hilfe der APPEND-An-
  157. weisung lassen sich beliebig große Programme schreiben. Zur Zeit
  158. haben im FIFO 100 Eingabezeilen Platz.
  159. Die EXEC-Anweisung liest aus einer Datei mit der Extension .IN ein
  160. Programm und die zugehörigen Unterprogramme in einen eigenen EXEC-
  161. Speicher ein. CALC wechselt in den EXEC-Modus, führt das Programm
  162. aus und wechselt in den APPEND-Modus zurück. Im EXEC-Modus kennt
  163. CALC zusätzliche Befehle( z.B.: DO-Schleifen, IF ENDIF Strukturen )
  164. aber nicht die APPEND-Anweisung. Im EXEC-Speicher haben zur Zeit
  165. mindestens 325, aber höchstens 1000 separierte Anweisungen Platz. 
  166.  
  167.  
  168. Hinweis zur Arbeitsweise von CALC beim Wechsel der Stellenzahl:
  169.  
  170. CALC wechselt intern die Stellenzahl in Schritten von 4 Dezimal-
  171. stellen. Beim Wechsel auf eine höhere Stellenzahl werden alle
  172. aktuellen Variablenmantissen mit Nullen aufgefüllt. Beim Wechsel
  173. auf eine niedrigere Stellenzahl werden alle aktuellen Variablen-
  174. mantissen gekürzt! Bei einem erneuten Wechsel auf eine höhere
  175. Stellenzahl sind die gekürzten Mantissenstellen verloren!
  176. C..NP
  177.                Beschreibung des Menüs
  178.                
  179. Die unteren Tasten des Menüs betätigt man durch Drücken der 10
  180. Funktionstasten. Die obere Tastenreihe erreicht man durch gleich-
  181. zeitiges Drücken der Shift-Taste mit einer Funktionstaste.
  182. Zur Kontrolle wird das zuletzt angewählte Funktionsfeld gedimmt
  183. oder seine Anzeige geändert.
  184.  
  185. Wesentlich beim Arbeiten mit CALC ist der Stack mit
  186. seinen Variablen A, B, C, D, E, F, G und H.
  187.  
  188. Durch Eingabe von arithmetischen Ausdrücken ohne Gleichheits-
  189. zeichen baut sich der Stack auf.
  190. Durch Drücken von bestimmten Funktionstasten
  191. baut sich der Stack ab.
  192. Schon hier sei gesagt, daß jede Funktionstaste eine equivalente
  193. Interpreteranweisung besitzt.
  194. Der Interpreter beherrscht jedoch viele zusätzliche Anweisungen.
  195. Der Interpreter baut den Stack nicht ab. Dies ist nur mit
  196. den speziellen Anweisungen CLEAR oder CLEARALL möglich.
  197. Falls der Stack mit seinen Variablen A bis H gefüllt ist, so
  198. bewirkt eine arithmetische Anweisung ohne das Gleichheitszeichen,
  199. einen Stacküberlauf. Der Stack wird gescrollt. Der neue Wert wird
  200. in H abgelegt. Der Wert in A geht verloren.
  201. Eine Stackvariable mit einem Wert kann jederzeit rechts und links
  202. vom Gleichheitszeichen einer Anweisung benutzt werden. Die erste
  203. freie Stackvariable darf links vom Gleichheitszeichen auftreten.
  204.  
  205. erg-key:
  206. Der Wert der letzten belegten Stackvariablen wird in der Ergebnis-
  207. zeile angezeigt. Falls der Loff/Lon-key auf Lon steht, wird das Er-
  208. gebnis ebenfalls in der Datei CALC.LS protokolliert. Es wird die
  209. Stellenanzahl aus L=nn ( nn=13 am Start ) benutzt.
  210.  
  211. strg-key:
  212. Der momentane Inhalt der Eingabezeile wird auf der Datei CALC.LS
  213. ausgegeben, falls der Loff/Lon-key auf Lon steht.
  214.  
  215. txt1-key, txt2-key, txt3-key:
  216. Der momentane Inhalt der Eingabezeile wird zwischengespeichert. Der
  217. gespeicherte Text kann jederzeit mit dem rechts daneben liegenden
  218. call-key in die Eingabezeile kopiert werden.
  219.  
  220. exch-key:
  221. Der Inhalt der beiden letzten Stackvariablen wird vertauscht.
  222.  
  223. C-key:
  224. Die letzte belegte Stackvariable wird freigegeben.
  225.  
  226. CA-key:
  227. Alle belegten Stackvariablen werden freigegeben.
  228.  
  229. Help-key:
  230. Die Helptaste ist ein Umschalter. Mit ihr lassen sich die Inhalte
  231. der Variablen I bis Z anzeigen.
  232. C..NP
  233.                Beschreibung des Menüs
  234.  
  235. set/edit-key:
  236. Umschalten in Set-Modus oder Edit-Modus für Oktal-,Hexadezimal-,
  237. Binär- und ASCII-Konstanten.
  238.  
  239. K=nn-key:
  240. Im Set-Modus werden Oktalkonstanten reihum als 4-, 8-, 16- oder
  241. 32-Bit-Konstanten definiert.
  242. Im Edit-Modus wird der Wert der letzten belegten Stackvariablen
  243. in der Ergebniszeile als Oktalkonstante angezeigt.
  244. Falls der Loff/Lon-key auf Lon steht, wird das Ergebnis
  245. ebenfalls in der Datei CALC.LS protokolliert. Es wird die
  246. Bitanzahl aus K=nn benutzt.
  247.  
  248. Z=nn-key:
  249. Im Set-Modus werden Hexadezimalkonstanten reihum als 4-, 8-, 16-
  250. oder 32-Bit-Konstanten definiert.
  251. Im Edit-Modus wird der Wert der letzten belegten Stackvariablen
  252. in der Ergebniszeile als Hexadezimalkonstante angezeigt.
  253. Falls der Loff/Lon-key auf Lon steht, wird das Ergebnis
  254. ebenfalls in der Datei CALC.LS protokolliert. Es wird die
  255. Bitanzahl aus Z=nn benutzt.
  256.  
  257. B=nn-key:
  258. Im Set-Modus werden Binärkonstanten reihum als 4-, 8-, 16- oder
  259. 32-Bit-Konstanten definiert.
  260. Im Edit-Modus wird der Wert der letzten belegten Stackvariablen
  261. in der Ergebniszeile als Binärkonstante angezeigt.
  262. Falls der Loff/Lon-key auf Lon steht, wird das Ergebnis
  263. ebenfalls in der Datei CALC.LS protokolliert. Es wird die
  264. Bitanzahl aus B=nn benutzt.
  265.  
  266. A=nn-key:
  267. Im Set-Modus werden ASCII-Konstanten reihum als 8-, 16-, 24- oder
  268. 32-Bit-Konstanten definiert.
  269. Im Edit-Modus wird der Wert der letzten belegten Stackvariablen
  270. in der Ergebniszeile als ASCII-Konstante, EBCDIC-Konstante und als
  271. Oktalkonstante angezeigt.
  272. Falls der Loff/Lon-key auf Lon steht, wird das Ergebnis
  273. ebenfalls in der Datei CALC.LS protokolliert. Es wird die
  274. Bitanzahl aus A=nn benutzt.
  275. C..NP
  276.                Beschreibung des Menüs
  277.  
  278. Rad/Grad-key:
  279. Umschalten in Radian-Modus oder Grad-Modus.
  280. Im Radian-Modus werden die Argumente der Funktionen SIN, COS und
  281. TAN in Radian interpretiert. Die Ergebnisse der Funktionen ASIN,
  282. ACOS und ATAN werden in Radian bestimmt.
  283. Im Grad-Modus werden die Argumente der Funktionen SIN, COS und
  284. TAN in Grad interpretiert. Die Ergebnisse der Funktionen ASIN,
  285. ACOS und ATAN werden in Grad bestimmt.
  286.  
  287. L=nn-key:
  288. Der letzte im Stack stehende Wert wird als nn übernommen. nn muß
  289. im Bereich 1 bis 999 liegen und ganzzahlig sein. Nach der Über-
  290. nahme wird die entsprechende Stackvariable freigegeben.
  291. Die Funktion ERG( arg ) gibt das Argument arg mit nn Stellen auf
  292. CALC.LS aus, falls der Loff-/Lon-key auf Lon steht ( siehe auch
  293. erg-key ). 
  294.  
  295. D=nn-key:
  296. Der letzte im Stack stehende Wert wird als nn übernommen. nn muß
  297. im Bereich 13 bis 999 liegen und ganzzahlig sein. Nach der Über-
  298. nahme wird die entsprechende Stackvariable freigegeben.
  299. Ab sofort rechnet CALC mit nn Dezimalstellen.
  300.  
  301. Loff/Lon-key:
  302. Umschalten in den LISTON-Modus oder den LISTOFF-Modus. Im LISTON-
  303. Modus kann auf verschiedene Arten auf die Datei CALC.LS ausgegeben
  304. werden. Beim ersten LISTON wird CALC.LS als Datei geöffnet. Falls
  305. CALC.LS schon existiert, so werden Ausgaben an die Datei angefügt.
  306. Ein LISTOFF nach einem LISTON sperrt die Datei CALC.LS, schließt
  307. sie aber nicht. Mit der Anweisung CLOSELS wird die Datei CALC.LS
  308. geschlossen.
  309. C..NP
  310.              Editieren Interpreteranweisungen
  311.              
  312. CALC besitzt eine Eingabezeile und eine Ausgabezeile.
  313. Der Cursor steht stets in der Eingabezeile.
  314.  
  315. In der Eingabezeile editiert der Benutzer seine Eingaben.
  316. Folgende Tasten stehen zum Editieren zur Verfügung:
  317.  
  318. Arrow Left    Cursor eine Stelle nach links
  319. Arrow Right   Cursor eine Stelle nach rechts
  320. Clr Home      Setzen Cursor an den Anfang der Eingabezeile
  321. Backspace     Löschen Zeichen links vom Cursor
  322. Delete        Löschen Zeichen unter dem Cursor
  323. Insert        Umschalter: insert ein / insert aus; Anzeige am Rand !
  324. Return/Enter  Ausführen einer editierten Anweisung
  325. CTRL E        Löschen Rest der Eingabezeile ab Cursorposition
  326. CTRL R        Springen nach rechts von Wort zu Wort
  327. CTRL L        Springen nach links  von Wort zu Wort
  328. CTRL A        Kopieren letzte Eingabe oder Cursor ans Ende vom Text
  329. CTRL Delete   Löschen Text in Eingabezeile, Speichern in Undo-Buffer
  330. Undo          Holen die letzten 10 mit CTRL-Delete gelöschten Texte
  331.               in Eingabezeile
  332. CTRL Q        Holen die letzten 10 mit Return/Enter eingegebenen
  333.               unterschiedlichen Texte in Eingabezeile
  334.  
  335. Es stehen alle druckbaren Zeichen in Groß- und Kleinschreibung und das
  336. Leerzeichen (Space) zur Verfügung.
  337.  
  338. Mehrere Anweisungen pro Eingabezeile sind duch Semikolon
  339. zu trennen.
  340.  
  341.  
  342. In der Ausgabezeile erscheinen Fehlermeldungen und bestimmte
  343. Ergebnisse.
  344.  
  345. C..NP
  346.              Systemanweisungen für den Interpreter
  347.  
  348. Anweisungen sind in Groß- oder Kleinschreibung
  349. ( auch gemischt ) in die Eingabezeile zu schreiben. Mehrere
  350. Anweisungen sind durch Semikolon zu trennen. Spaces können
  351. beliebig eingestreut werden. Return/Enter schließt die Eingabe
  352. ab und führt die Anweisung aus.
  353.  
  354. Beginnt eine Eingabezeile mit dem Zeichenstring 'BY', so wird
  355. CALC beendet. Der Rest der Eingabe wird nicht mehr geprüft.
  356. Beispiel:  By1234 ...  beendet CALC.
  357.  
  358.  
  359. BY         CALC beenden
  360. by
  361.  
  362. DIR        Aktuelle directory in Ausgabezeile anzeigen
  363. dir
  364.  
  365. WHO        Benutzernamen in Ausgabezeile anzeigen
  366. who
  367.  
  368. TIME       Uhrzeit in Ausgabezeile anzeigen
  369. time
  370.  
  371. DATE       Datum in Ausgabezeile anzeigen
  372. date
  373.  
  374. BELL       Bildschirmklingel betätigen
  375. bell
  376.  
  377.  
  378.  
  379. Weitere Anweisungen für den Interpreter werden später er-
  380. läutert.
  381.  
  382. C..NP
  383.              Arithmetische Interpreteranweisungen
  384.  
  385. Der Interpreter hält mathematische Regeln in Interpretation
  386. und Ausführung strikt ein. Zusätzliche Erweiterungen
  387. lehnen sich an Fortran 77 an.
  388.  
  389. CALC unterscheidet zwischen arithmetischen Ausdrücken
  390. und arithmetischen Zuweisungen. Eine Zuweisung enthält
  391. das Gleichheitszeichen. Sie weist einer bestimmten Variablen
  392. ( Adresse) einen Wert zu. Der Wert eines arithmetischen
  393. Ausdrucks wird immer der nächsten freien Stackvariablen
  394. zugewiesen. Sind alle Stackvariablen belegt, so wird der Stack
  395. gescrollt und der Wert der letzten Stackvariablen H zuge-
  396. wiesen. Der Inhalt der Stackvariablen A geht verloren.
  397.  
  398. In arithmetische Interpreteranweisungen dürfen beliebig viele
  399. Spaces eingestreut werden ( Ausnahme: ASCII-Konstanten ).
  400.  
  401.  
  402. Variablenvorrat des Interpreters:
  403.  
  404. a) Stackvariablen       A, B, C, D, E, F, G und H.
  405. b) permanente Variablen I, J, K, ... , X, Y, Z.
  406. c) Vektorvariablen      K(i), XR(i), XI(i) ( i = 1 bis 99 )
  407. d) definierte Variablen 2 bis 31 Zeichen. Erstes Zeichen ein
  408.                         Buchstabe. Sonst Buchstaben, Ziffern
  409.                         und Underscore.
  410. e) Ergebnisvariablen    PXR(i), PXI(i) ( i ist ein beliebiger Wert )
  411.                         Ergebnisvariablen sind nur rechts vom Gleich-
  412.                         heitszeichen verfügbar.
  413.                         
  414. Variablen können links und rechts vom Gleichheitszeichen
  415. einer Anweisung auftreten. Rekursive Anweisungen wie
  416. A = A + B sind erlaubt. Den Stackvariablen A und B muß jedoch vorher
  417. ein Wert zugewiesen worden sein. Die Anweisung D = A ist nur
  418. erlaubt, wenn D schon einen Wert enthält oder D die nächste
  419. freie Stackvariable ist. Für permanente Variablen, Vektor-
  420. Variablen und definierte Variablen gelten diese Einschränkungen
  421. nicht. Ihre Werte sind beim Start von CALC auf Null.
  422.  
  423. Die Vektorvariablen K(i), XR(i) und XI(i) sind links vom Gleichheits-
  424. zeichen mit Indices anzusprechen. Die Indices sind ganzzahlige
  425. arithmetische Ausdrücke im Bereich von 1 bis 99.
  426.  
  427.           A=INT(PI)); XR(A)  = 123.4      ist erlaubt.
  428.           A=5;        XI(A^2)= 123.4      ist erlaubt.
  429.                       K(3+5) = 123.4      ist erlaubt.
  430.           A   = 3;    K(A)   = 123.4      ist erlaubt.
  431. DEF"ABC"; ABC = 3;    K(ABC) = 123.4      ist erlaubt.
  432.           A   = Pi;   K(A)   = 123.4      ist nicht erlaubt.
  433.           K(1)= 3;    K(K(1))= 123.4      ist erlaubt.
  434. C..NP
  435.               Operatoren und Konstanten
  436.  
  437. Operatoren für arithmetische Ausdrücke:
  438.  
  439. +     Addition
  440. -     Subtraktion
  441. *     Multiplikation
  442. /     Division
  443. **    Potenzierung
  444. ^     Potenzierung
  445.  
  446. Sonderzeichen für arithmetische Ausdrücke:
  447.  
  448. (     Klammer auf
  449. )     Klammer zu
  450. ,     Komma für Funktionen mit mehreren Veränderlichen und
  451.       als Separator für bestimmte Formen von ASCII-Konstanten
  452. '     Hochkomma für ASCII-Konstanten, Matrizen und Textvariable
  453.  
  454. Sonderzeichen für weitere Interpreteranweisungen:
  455.  
  456. "     Doppelhochkomma für Symbole, Text oder bedingte Anweisungen
  457.  
  458. Konstanten für arithmetische Ausdrücke:
  459.  
  460. Symbolische Konstanten:
  461. Pi    für die Kreiskonstante 3.14 ...
  462. Eu    für die Eulersche Zahl 2.71 ...
  463.  
  464. Dezimalkonstanten:
  465. Alle vernünftigen Darstellungen im allgemeinen E-Format sind
  466. erlaubt.
  467. Die Konstanten  1, .1, 1., 1E1, .1E+1, 1.E-1  sind zulässig.
  468. E+1 ist zulässig, wird jedoch als Addition der Stackvariablen
  469. E und der Konstanten 1 interpretiert.
  470.  
  471. Binärkonstanten:
  472. Die jeweils gültige Länge der Binärkonstanten wird im Set-Modus
  473. gesetzt. Mögliche Längen sind 4 Bit, 8 Bit, 16 Bit und 32 Bit.
  474. 1111B     = -1   im 4 Bit Format.
  475. 1111B     = 15   im 8 Bit Format.
  476.  
  477. Octalkonstanten:
  478. Die jeweils gültige Länge der Octalkonstanten wird im Set-Modus
  479. gesetzt. Mögliche Längen sind 4 Bit, 8 Bit, 16 Bit und 32 Bit.
  480. 17K       = -1   im 4 Bit Format.
  481. 17K       = 15   im 8 Bit Format.
  482.  
  483. Hexadezimalkonstanten:
  484. Die jeweils gültige Länge der Hexadezimalkonstanten wird im
  485. Set-Modus gesetzt. Mögliche Längen sind 4 Bit, 8 Bit, 16 Bit
  486. und 32 Bit.
  487. FZ        = -1   im 4 Bit Format.
  488. FZ        = 15   im 8 Bit Format.
  489. C..NP
  490.              ASCII-Konstanten
  491.  
  492. Die jeweils gültige Länge der ASCII-Konstanten wird im Set-Modus
  493. gesetzt. Mögliche Längen sind 8 Bit, 16 Bit, 24 Bit und 32 Bit.
  494.  
  495. ASCII-Konstanten werden in Hochkommata eingeschlossen. In Ab-
  496. hängigkeit von dem eingestellten Modus können bis zu vier
  497. Zeichen als Argumente angegeben werden. Werden weniger Argumente
  498. als zulässig angegeben, so werden die Argumente rechtsbündig
  499. interpretiert (  'a' enspricht '   a'  im 32 Bit Modus ).
  500. Nicht druckbare Zeichen können als Mnemonics oder als Oktal-
  501. zahlen ( ohne Endung K ) durch Kommata getrennt in spitzen
  502. Klammern eingegeben werden. Als Argument ist das Hochkomma-
  503. Zeichen doppelt anzugeben. Die spitzen Klammern können nicht
  504. direkt als Argumente angegeben werden. Sie sind als Mnemonics
  505. LT und GT oder als Oktalzahlen anzugeben. Unten ist die
  506. komplette Mnemonic-Tabelle aufgeführt.
  507.  
  508. Beispiele:
  509. 'A'            =             65 im  8 Bit Format.
  510. 'AA'           =         16 705 im 16 Bit Format.
  511. 'AAA'          =      4 276 545 im 24 Bit Format.
  512. 'AAAA'         =  1 094 795 585 im 32 Bit Format.
  513. 'a<NL,FF,12>'  =  1 628 048 394 im 32 Bit Format.
  514. '<LT>a<GT,2>'  =  1 013 005 826 im 32 Bit Format.
  515. '<a> '         =         24 864 im 32 Bit Format.
  516. '<a>'          =             97 im 32 Bit Format.
  517. ''''      = 39    entspricht dem Dezimalwert eines Apostrophs.
  518.  
  519. Mnemonics für ASCII im Oktalbereich 0 bis 177.
  520. 'NUL'=000   'SOH'=001   'STX'=002   'ETX'=003   'EOT'=004
  521. 'ENQ'=005   'ACK'=006   'BEL'=007   'BS '=010   'TAB'=011
  522. 'NL '=012   'VT '=013   'FF '=014   'CR '=015   'SO '=016
  523. 'SI '=017   'DLE'=020   'DC1'=021   'DC2'=022   'DC3'=023
  524. 'DC4'=024   'NAK'=025   'SYN'=026   'ETB'=027   'CAN'=030
  525. 'EM '=031   'SUB'=032   'ESC'=033   'FS '=034   'GS '=035
  526. 'RS '=036   'US '=037   'SP '=040   '!  '=041   '"  '=042
  527. '#  '=043   '$  '=044   '%  '=045   '&  '=046   "   "
  528. '(  '=050   ')  '=051   '*  '=052   '+  '=053   '   '=
  529. '-  '=055   '.  '=056   '/  '=057   '   '=      '   '=
  530. '   '=      '   '=      '   '=      '   '=      '   '=
  531. '   '=      '   '=      '   '=      ':  '=072   ';  '=073
  532. 'LT '=074   '=  '=075   'GT '=076   '?  '=077   '@  '=100
  533. 'A  '=101   'B  '=102   'C  '=103   'D  '=104   'E  '=105
  534. 'F  '=106   'G  '=107   'H  '=110   'I  '=111   'J  '=112
  535. 'K  '=113   'L  '=114   'M  '=115   'N  '=116   'O  '=117
  536. 'P  '=120   'Q  '=121   'R  '=122   'S  '=123   'T  '=124
  537. 'U  '=125   'V  '=126   'W  '=127   'X  '=130   'Y  '=131
  538. 'Z  '=132   '[  '=133   '\  '=134   ']  '=135   '^  '=136
  539. '_  '=137   '   '       'a  '=141   'b  '=142   'c  '=143
  540. 'd  '=144   'e  '=145   'f  '=146   'g  '=147   'h  '=150
  541. 'i  '=151   'j  '=152   'k  '=153   'l  '=154   'm  '=155
  542. 'n  '=156   'o  '=157   'p  '=160   'q  '=161   'r  '=162
  543. 's  '=163   't  '=164   'u  '=165   'v  '=166   'w  '=167
  544. 'x  '=170   'y  '=171   'z  '=172   '{  '=173   '|  '=174
  545. '}  '=175   '~  '=176   'DEL'=177
  546. C..NP
  547.              Argumente und Adressen
  548.  
  549. Definition eines Arguments arg:
  550.  
  551. arg ist ein beliebiger arithmetischer Ausdruck. In bedingten
  552. Anweisungen wird der errechnete Wert des Ausdrucks als logischer
  553. Wert .TRUE. oder .FALSE. interpretiert. Der Wert Null ent-
  554. spricht dem logischen Wert .FALSE. Jeder Wert ungleich Null
  555. entspricht dem logischen .TRUE. In bedingten Ausdrücken dürfen
  556. .T., .F., .Y. und .F. als Argumente angegeben werden. Diese
  557. Werte dürfen ebenfalls als Eingabe in der Input-Anweisung
  558. verwendet werden. Wird als Argument Space oder nichts an-
  559. gegeben, so wird .TRUE. als Argument angenommen.
  560.  
  561.  
  562. Definition einer Adresse adr:
  563.  
  564. Eine Adresse adr ist eine Variable, in die etwas geschrieben
  565. wird.
  566. Die zulässigen Adressen sind im Kapitel über den Variablenvorrat
  567. angegeben.
  568.  
  569. Form einer arithmetischen Zuweisung:
  570.  
  571. adr = arg
  572.  
  573.  
  574.  
  575. Liste der bedingten CALC-Anweisungen mit Argumentangaben:
  576.  
  577. APPEND(  arg ) " Makro-Name "
  578. EXEC  (  arg ) " Programm-Name "
  579. CALL  (  arg ) " Unterprogramm-Name "
  580. STRG  (  arg ) " auszugebender T e x t "
  581. IF    (  arg ) " eine Anweisung "
  582. IF    (  arg ) THEN
  583. ELSEIF(  arg ) THEN
  584. CALL1 (  arg )
  585. CALL2 (  arg )
  586. CALL3 (  arg )
  587. COMMAND( arg ) " T e x t zur COMMAND-Anweisung "
  588. MFORM (  arg ) "(Formatangaben nach FORTRAN-Konvention)"
  589. STOP  (  arg ) " Text zur STOP-Anweisung "
  590. EX_X  (  arg )
  591. EX_Y  (  arg )
  592. EX_Z  (  arg )
  593.  
  594.  
  595.  
  596. Anweisungen mit Adressenangaben:
  597.  
  598. READ ( adr ) " Daten-Name "
  599. INPUT( adr ) " T e x t zur INPUT-Anweisung "
  600. MPOS ( adr ) " Matrizen-Name oder Daten-Name "
  601. C..NP
  602.              Textvariable und Stringvarible
  603.              
  604. Textvariable sind in Hochkomma eingeschlossene Buchstaben von
  605. A bis Z oder a bis z. Sie können rechts und links vom Gleichheits-
  606. zeichen auftreten. Textvariable können Text der Länge 0 bis 76
  607. aufnehmen.
  608. Textvariable erhalten ihren Inhalt aus Textvariablen, String-
  609. variablen oder aus speziellen Funktionen.
  610.  
  611. Stringvariable die der User nicht verändern kann:
  612.  
  613. USER, REGISTER, VERSION und VIEW.
  614.  
  615. 'A' = User           In 'a' wird der Name des Users abgelegt.
  616. 'A' = Register       In 'a' wird die Registriernummer abgelegt.
  617. 'A' = Version        In 'a' wird die Programmversion abgelegt.
  618. 'A' = View           Der Inhalt von 'a' wird in der Ergebniszeile
  619.                      angezeigt.
  620.                      
  621. Stringvariable die der User verändern kann:
  622.  
  623. STRING
  624.  
  625. " T e x t "          Die Stringvariable STRING erhält den Inhalt
  626.                      T e x t . "Text" ist eine Stringanweisung.
  627. 'A' = String         In 'a' wird der Inhalt von STRING abgelegt.
  628.  
  629. Weitere Möglichkeiten Textvariablen Text zuzuweisen:
  630.  
  631. 'a' = ""             'a' wird Text der Länge null zugewiesen.
  632. 'b' = "3.141"        'b' wird der Text 3.141 zugewiesen.
  633. 'c' = "'a'"          'c' wird der Inhalt von 'a' zugewiesen.
  634. 'd' = "Pi = 'b'"     'd' wird der Text 'Pi = ' und der Inhalt von
  635.                      'b' zugewiesen. Ergebnis:  'Pi = 3.141' .
  636.  
  637. Das Ersetzen einer Textvariablen in einer Stringanweisung durch 
  638. ihren Inhalt nennt man Substitution. Die Substitution kann mit
  639. den Anweisungen  SUBON und SUBOFF an- und abgeschaltet werden.
  640. Beim Start von CALC gilt SUBON.
  641.  
  642. Beispiel:
  643. SUBOFF; 'a' = "'b'"  'a' wird der Text 'b' zugewiesen.
  644. SUBON                Sollte nach SUBOFF nicht vergessen werden !
  645.  
  646. Beispiel mit mehrstufiger Substitution:
  647. 'a' = "Hugo"
  648. SUBOFF
  649. 'b' = "'a'"
  650. SUBON
  651. 'c' = "'b' ist doof."       'c' erhält den Text 'Hugo ist doof.'
  652.                             Max. 7 Substitutionsstufen werden
  653.                             ausgeführt.
  654.                             
  655. Zweites Beispiel mit mehrstufiger Substitution:
  656. 'a' = "Hugo"
  657. 'b' = "a"
  658. 'c' = "''b'' ist doof."     'c' erhält den Text 'Hugo ist doof.'
  659. C..NP
  660.              Funktionen für Textvariablen
  661.              
  662. CHAR( 'a', arg )
  663.                 Der Textvariablen 'a' wird ein ASCII Zeichen mit
  664.                 dem Wert arg zugewiesen. arg ist ein arithm. Aus-
  665.                 druck mit dem ganzzahligen Wert 0 bis 255.
  666.                 Beispiel: char( 'a', '<nl>' ) 
  667.                 Der Textvariablen 'a' wird das ASCII Zeichen Line-
  668.                 feed zugewiesen.
  669.                 
  670. EDIT( 'A',      Aufbereiten n Argumente in der Textvariablen 'a'.
  671.       arg,      In arg steht das Format für die n Argumente.
  672.       arg1,     Die Argumente werden möglichst kurz aufbereitet.
  673.       arg2,     arg ist in der Funktion LISTFM näher beschrieben.
  674.       ... ,     Die Textvariable darf die Länge 76 nicht über-
  675.       argn )    schreiten! In der PD-Version ist arg=0 zu setzen.
  676.                                         
  677. EDITFM( 'A',    Aufbereiten n Argumente in der Textvariablen 'a'.
  678.       arg,      In arg steht das Format für die n Argumente.
  679.       arg1,     Die Argumente werden spaltengerecht aufbereitet. 
  680.       arg2,     arg ist in der Funktion LISTFM näher beschrieben.
  681.       ... ,     Die Textvariable darf die Länge 76 nicht über-
  682.       argn )    schreiten! In der PD-Version ist arg=0 zu setzen.
  683.       
  684. EDITMFM( 'A',   Aufbereiten die Argumente arg2, arg4, arg6, ... argn
  685.   arg1, arg2,   in der Textvariablen 'a'. Die Formate stehen in
  686.   arg3, arg4,   arg1, arg3, arg5, ... argn-1. Die Argumente werden
  687.   arg5, arg6,   spaltengerecht aufbereitet. Die Formate sind in der
  688.      .  .  .    Funktion LISTFM näher beschrieben. Die Textvariable
  689.   argn-1,argn ) darf die Länge 76 nicht überschreiten.
  690.                 In der PD-Version sind die Formate auf Null zu setzen.
  691.                 
  692. EX_X( arg )     Ausführen Text in der Textvariablen 'x' als An-
  693.                 weisung. Es darf nur eine Anweisung in 'x' stehen
  694.                 ( kein Semikolon ). Die Anweisung wird nur aus-
  695.                 geführt, wenn der Wert von arg ungleich Null ist
  696.                 oder arg Space ist.
  697.                 
  698. EX_Y( arg )     Ausführen Text in der Textvariablen 'y' als An-
  699.                 weisung. Es darf nur eine Anweisung in 'y' stehen
  700.                 ( kein Semikolon ). Die Anweisung wird nur aus-
  701.                 geführt, wenn der Wert von arg ungleich Null ist
  702.                 oder arg Space ist.
  703.                 
  704. EX_Z( arg )     Ausführen Text in der Textvariablen 'z' als An-
  705.                 weisung. Es darf nur eine Anweisung in 'z' stehen
  706.                 ( kein Semikolon ). Die Anweisung wird nur aus-
  707.                 geführt, wenn der Wert von arg ungleich Null ist
  708.                 oder arg Space ist.
  709. C..NP
  710.              Anweisungen mit Textvariablen
  711.              
  712. In den folgenden Anweisungen sind Textvariable im Stringteil erlaubt:                
  713.                        
  714.                " ... 'a' ... "                        
  715. 'A'  =         " ... 'a' ... "                        
  716. EXEC   ( arg ) " ... 'a' ... "                        
  717. STRG   ( arg ) " ... 'a' ... "                        
  718. STOP   ( arg ) " ... 'a' ... "                        
  719. APPEND ( arg ) " ... 'a' ... "                        
  720. MFORM  ( arg ) " ... 'a' ... "                        
  721. COMMAND( arg ) " ... 'a' ... "                        
  722. MPOS   ( adr ) " ... 'a' ... "                        
  723. INPUT  ( adr ) " ... 'a' ... "                        
  724. READ   ( adr ) " ... 'a' ... "
  725.  
  726.                         
  727. C..NP
  728.              Funktionen für arithmetische AusdrÜcke
  729.  
  730. Für sämtliche Argumente der unten aufgeführten Funktionen
  731. gilt ohne Ausnahme:  Argumente sind beliebige arithmetische
  732. Ausdrücke aus Konstanten, Variablen und Funktionen.
  733.  
  734. SQR( arg )      Quadratwurzel berechnen.
  735.                 arg >= 0 . Ergebnis positiv.
  736.                 Falls arg eine reine Quadratzahl ist, so
  737.                 ist das Ergebnis in jedem Fall ganzzahlig.
  738.  
  739. SIN( arg )      arg beliebig in Grad oder Radian ( Shift F6 ! ).
  740. COS( arg )       "      "    "    "   "     "         "        .
  741. TAN( arg )       "      "    "    "   "     "         "        .
  742.  
  743. ASIN( arg )     -1 =< arg <= 1   Ergebnis in Grad oder Radian.
  744. ACOS( arg )     -1 =< arg <= 1      "     "    "   "     "   .
  745. ATAN( arg )     arg beliebig        "     "    "   "     "   .
  746.  
  747. LN( arg )       Natürlicher Logarithmus,  arg > 0.
  748. LOG( arg )      Dekadischer Logarithmus,  arg > 0.
  749.  
  750. EXP( arg )      E-Funktion, arg beliebig.
  751.  
  752. K( arg )        Wert des Vektorelementes von K.
  753.                 arg ganzzahlig und im Bereich 1 bis 99.
  754.  
  755. EI( arg )       Eulersche Zahlen Ei. arg = 1, 2, ... , 99.
  756. BI( arg )       Bernoulli Zahlen Bi. arg = 1, 2, ... , 99.
  757.  
  758. FAK( arg )      Fakultät,  0 =< arg <= 5014,  arg ganzzahlig.
  759.  
  760. Nuk(arg1,arg2)  Binomialkoeffizienten N über K,
  761.                 arg1 >= arg2,   arg1 und arg2 ganzzahlig.
  762.  
  763. INT( arg )      Ganzzahliger Teil von arg. INT( .9 )   =  0.
  764.                                            INT( -3.7 ) = -3.
  765. ABS( arg )      Absolutbetrag von arg.
  766. NEG( arg )      Negation von arg.
  767.  
  768. SIGN( arg )     Vorzeichen von arg. Ergebnis ist +1 für arg >= 0
  769.                                     Ergebnis ist -1 für arg <  0
  770.  
  771. MIN( ... )      Minimum von n Argumenten ( n >= 2 ).
  772. MAX( ... )      Maximum von n Argumenten ( n >= 2 ).
  773.  
  774. MOD(arg1,arg2)  Modulo-Funktion. arg1, arg2 beliebig. MOD be-
  775.                 stimmt den Rest von arg1 = K * arg2 + Rest.
  776.                 K ist ganzzahlig.
  777. C..NP
  778.              Ein Beispiel für Tastatureingaben
  779.  
  780. Die gebrochene Funktion
  781. y = ( 1 + 2 x + 3 x^2 + x^3 ) / ( 1 - pi * x + eu * x^2 )
  782. soll für x = 1, 2, 3, 4 und 5 berechnet und dokumentiert
  783. werden.
  784.  
  785. Mit den Stackvariablen a und b kann die Funktion in
  786. b = ( 1 + 2*a + 3*a^2 + a^3 ) / ( 1 - pi * a + eu * a^2 )
  787. umgeschrieben werden. Diesen Zeichenstring speichern wir
  788. mit txt1 ab ( Funktionstaste 3 ).
  789.  
  790. Nun wird mit SHIFT F9 vom List-off Modus in den
  791. List-on Modus geschaltet ( Loff / Lon ). Eine Ausgabe-
  792. datei CALC.LS wird in der aktuellen Userdirectory eröffnet.
  793. Falls die Datei schon existiert, werden eventuelle Aus-
  794. gaben von CALC an die Datei hinzugefügt. Der List-on Modus
  795. darf beliebig oft ein- und ausgeschaltet werden.
  796.  
  797. Mit call ( F4 ) holen wir den Zeichenstring in die Eingabe-
  798. zeile und speichern ihn mit strg ( F2 ) ab.
  799. Mit Control Delete löschen wir die Eingabezeile und drücken
  800. nochmal strg. Damit haben wir eine Leerzeile ausgegeben.
  801.  
  802. Mit den folgenden Aktionen wird nun die Funktion mit
  803. 15 gültigen Ergebnisstellen dokumentiert.
  804.  
  805. 15 ; 15
  806. Return
  807. SHIFT F8         ( D=15 )
  808. SHIFT F7         ( L=15 )
  809.  
  810. a = 1
  811. F2               ( strg )
  812. Return  
  813. F4               ( call )
  814. Return  
  815. F1               ( Erg )
  816.  
  817. a = 2
  818. F2               ( strg )
  819. Return  
  820. F4               ( call )
  821. Return   
  822. F1               ( Erg )
  823.  
  824. usw.  mit a = 3 und a = 4.
  825.  
  826. Inhalt CALC.LS:
  827.  
  828.  b = ( 1 + 2*a + 3*a^2 + a^3 ) / ( 1 - pi * a + eu * a^2 )
  829.  
  830.  a = 1
  831.   .121382545486258E+00002
  832.  a = 2
  833.   .447231831210942E+00001
  834.  a = 3
  835.   .380304977893765E+00001
  836.  a = 4
  837.   .378999794997647E+00001
  838.